#!/usr/bin/env bash
#-------------------------------------------------------
#	FileName	: main.sh
#	Author		：hpy
#	Date		：2020年10月09日
#	Description	：
#-------------------------------------------------------

rootDir=$(dirname $0)
STORE_LAST_FILE=".dir.file" 
#文件 .rootdir作为项目的根目录标定
main(){
	cd $rootDir
	echo $(pwd)> ".rootdir" #更新根目录的路径
	case $1 in 
		'-f' )menuFind $2 ;;  # 寻找满足条件的shell文件，模糊筛选
		*) menuAll ;; #列出所有功能脚本
	esac
	
	exit 0 
}


#寻找满足条件的shell
FilterFindShell(){
	find -type f -print | grep "$*.sh"
	find -type f -print | grep "$*.fish"
}
# 生成menu 只包括匹配了搜索的结果
menuFind(){
	shellFile=$(FilterFindShell $1) #查找 bash fish脚本
	disAllShell $shellFile #按条目显示 默认文件名为目录名称
	runSelectFile $shellFile #根据用户输入的选择执行的脚本
}
#寻找所有的 bash shell 和 fish shell 脚本
FindAllBashOrFishShell(){
	find -name "*.sh"  #找出bash脚本
	find -name "*.fish" #找出 fish 脚本
}

#显示所有条目
disAllShell(){
	echo 
	echo "------------- 存在的脚本 --------------"
	idx=1
	echo "0. 退出"
	for i in $*
	do
		i=${i##*/}
		echo "$idx. $i"
		idx=$[idx+1]
	done
	echo
}
#执行用户选择的脚本
runSelectFile(){
	read -p "输入要执行的项目代码:" key
	rt=$(isNumber $key)
	if [[ $rt -eq 0 ]];then
		if [[ $key -gt 0 ]];then #执行对应脚本
			exeShellPath=$(eval echo \${$key}) #获得目标脚本路径
			echo "目标脚本为 : $exeShellPath"
			chmod +x $exeShellPath
			echo
			echo "------------- Shell console -------------"
			eval $exeShellPath && readlink -f $exeShellPath > $STORE_LAST_FILE
			echo
		else
			exit 0 #退出
		fi
	fi
}
# 生成menu 包括所有的目标脚本
menuAll(){
	shellFile=$(FindAllBashOrFishShell) #查找 bash fish脚本
	disAllShell $shellFile #按条目显示 默认文件名为目录名称
	runSelectFile $shellFile #根据用户输入的选择执行的脚本
}

##返回0 是数字
##返回1 不是数字 
isNumber(){
	y=$(echo "$1" | sed 's/[0-9]//g')
	if [ -z "$y" ];then
		echo 0 #是数字 
	else
		echo 1 #"不是数字"
	fi
}

main $*
